<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="zh_CN" xml:lang="zh_CN">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" href="../rurple.css" type="text/css" />

<title>体验类</title>
</head>
<body>
<h2 class="title">38. 体验类 "<span class="pykeyword">class</span>"</h2>

<p>我们已经看到如何为一个已经存在的class增加方法--我们维修了机器人，使得它能够右转.  下面是另外一个位已经存在的类增加方法.</p>

<pre>
<span class="keyword">class</span> Amazing(RefurbishedRobot):
    <span class="keyword">def</span> diag(self):
        self.set_trace_style(1, <span class="string">'white'</span>)
        self.turn_left()
        self.move()
        self.turn_right()
        self.move()
        self.set_trace_style(1, <span class="string">'sea green'</span>)

Magician = Amazing()
Magician.move()
Magician.move()
Magician.diag()
Magician.diag()
Magician.move()
Magician.move()
Magician.turn_off()
</pre>

<p><img alt="magic"  src="../../images/inter/magic.png" /></p>

<p>T新的机器人知道所有 <tt>RefurbishedRobot</tt> 知道的方法 [比如, <tt>move(), turn_off()</tt>] ,此外他还有一个新方法 [<tt>diag()</tt>].</p>

<h3 class="section">设计一个新<span class="pykeyword">class</span></h3>

<p>S有时候我们想创建一个新的类,这个新的类修改了已有的类所定义的基本行为.  为此, 我们需要重新定义一个特别的方法[<tt>__init__()</tt>].  下面的例子中, 我们 "修正了漏油问题", 这样新的机器人将不会留下踪迹. 事实上, 我们做的就是留下白色的踪迹,而不是原来的海绿色踪迹, 同时划在大街的中央 [定义为风格 5] 因此它会被灰色的点线所覆盖, 就好像被机器人涂掉了一样.</p>

<pre>
<span class="keyword">class</span> Eraser(RefurbishedRobot):
    <span class="keyword">def</span> __init__(self):
        RefurbishedRobot.__init__(self)
        self.set_trace_style(5, <span class="string">'white'</span>)

Sneaky = Eraser()
<span class="keyword">while</span> Sneaky.front_is_clear():
    Sneaky.move()
Sneaky.turn_off()
</pre>

<p><img alt="eraser"  src="../../images/inter/eraser.png" /></p>

<p>你也许想用其他的风格 (1 到 5)来显示成其它颜色.</p>

<div class="lessons_nav">
<a href="37-class.htm"><img alt="previous" src=
"../../images/previous.png" />修补乐跑机器人</a> - <a href=
"../lessons_toc.htm"><img alt="home" src="../../images/home.png" /></a> - <a href=
"39-import.htm">避免重复 - Import.<img alt="next"
src="../../images/next.png" /></a>
</div>
</body>
</html>
